package com.zg.autoform.example;

import com.zg.common.core.User;
import com.zg.common.web.Req;

import java.util.Arrays;
import java.util.List;

/**
 * 数据权限过滤示例类
 * 用于演示如何在数据选择器中实现权限过滤
 * 
 * @author zg
 */
public class DataPermissionExample {
    
    /**
     * 示例1：返回当前用户有权限的部门ID列表
     * 配置示例：
     * - permissionField: dept_id
     * - className: com.zg.autoform.example.DataPermissionExample
     * - methodName: getUserDeptIds
     */
    public List<String> getUserDeptIds() {
        User currentUser = Req.getCurrUser();
        if (currentUser != null) {
            // 这里应该根据实际业务逻辑查询用户有权限的部门ID
            // 示例：假设用户有权限查看部门1、2、3的数据
            return Arrays.asList("1", "2", "3");
        }
        return Arrays.asList(); // 返回空列表表示无权限
    }
    
    /**
     * 示例2：返回当前用户的用户名
     * 配置示例：
     * - permissionField: create_by
     * - className: com.zg.autoform.example.DataPermissionExample
     * - methodName: getCurrentUsername
     */
    public String getCurrentUsername() {
        User currentUser = Req.getCurrUser();
        if (currentUser != null) {
            return currentUser.getUsername();
        }
        return null; // 返回null表示无权限
    }
    
    /**
     * 示例3：返回当前用户有权限的组织机构代码列表
     * 配置示例：
     * - permissionField: org_code
     * - className: com.zg.autoform.example.DataPermissionExample
     * - methodName: getUserOrgCodes
     */
    public List<String> getUserOrgCodes() {
        User currentUser = Req.getCurrUser();
        if (currentUser != null) {
            // 这里应该根据实际业务逻辑查询用户有权限的组织机构代码
            // 示例：假设用户有权限查看ORG001、ORG002的数据
            return Arrays.asList("ORG001", "ORG002");
        }
        return Arrays.asList(); // 返回空列表表示无权限
    }
    
    /**
     * 示例4：返回当前用户的ID
     * 配置示例：
     * - permissionField: user_id
     * - className: com.zg.autoform.example.DataPermissionExample
     * - methodName: getCurrentUserId
     */
    public Long getCurrentUserId() {
        User currentUser = Req.getCurrUser();
        if (currentUser != null) {
            return currentUser.getId();
        }
        return null; // 返回null表示无权限
    }
}
